export interface BasicMapperI {
  /**
   * 查询多条
   * @param list
   * @param value
   */
  find<T>(list: Array<T>, value: { [prop: string]: any }): Array<T>;

  /**
   * 查询单条
   * @param list
   * @param value
   */
  findOne<T>(list: Array<T>, value: { [prop: string]: any }): T | undefined;

  /**
   * 根据id进行查询单个
   * @param list
   * @param id
   */
  findOneById<T>(list: Array<T>, id: string): T | undefined;

  /**
   * 根据指定属性值的集合进行查询
   * @param list
   * @param arr 属性值的数组
   * @param where 属性名
   */
  findWhereIn<T>(list: Array<T>, arr: Array<any>, where: string): Array<T>;

  /**
   * 插入多条
   * @param list
   * @param arr
   */
  insertMany<T>(list: Array<T>, arr: Array<T>): Array<T>;

  /**
   * 删除
   * @param list
   * @param value
   */
  remove<T>(list: Array<T>, value: T): Array<T>;
  removeWhereIn<T>(list: Array<T>, arr: Array<any>, where: string): Array<T>;

  /**
   * 根据id进行更新
   * @param list
   * @param newData 属性值
   */
  updateById<T>(list: Array<T>, newData: T): Array<T>;

  updateByField<T>(list: Array<T>, newData: any, field: string): Array<T>;

  /**
   * 根据指定id不在属性值的集合中的进行更新
   * @param list
   * @param notIn
   * @param newData
   */
  updateByIdNotIn<T>(list: Array<T>, notIn: Array<any>, newData: T): Array<T>;
}
